#define _CRT_SECURE_NO_WARNINGS 1
#include "Heap.h"

//void text()
//{
//	HP hp;
//	HPInit(&hp);
//	HPPush(&hp, 65);
//	HPPush(&hp, 100);
//	HPPush(&hp, 70);
//	HPPush(&hp, 32);
//	HPPush(&hp, 50);
//	HPPush(&hp, 60);
//	printf("%d \n", HPSize(&hp));
//	while (!HPEmpty(&hp))
//	{
//		printf("%d ", HPTop(&hp));
//		HPPop(&hp);
//	}
//}
//void HeapSort(int* a, int n)
//{
//	for (int i = 1; i < n; i++)
//	{
//		AdjustUp(a, i);
//	}
//	int end = n - 1;
//	while (end > 0)
//	{
//		Swap(&a[0], &a[end]);
//		AdjustDown(a, end, 0);
//		end--;
//	}
//}
void CreateData()
{
	int n = 100;
	srand(time(0));
	const char* file = "data.txt";
	FILE* fin = fopen(file, "w");
	for (int i = 0; i < n; i++)
	{
		int x = rand() % 1000000;
		fprintf(fin, "%d\n", x);
	}
}
void TopK(int k)
{
	const char* file = "data.txt";
	FILE* fout = fopen(file, "r");
	int* kmin = (int*)malloc(sizeof(int) * k);
	for (int i = 0; i < k; i++)
	{
		fscanf(fout, "%d", &kmin[i]);
	}
	for (int i = (k - 2); i >= 0; i--)
	{
		AdjustDown(kmin, k, i);
	}
	int val = 0;
	while (!feof(fout))
	{
		fscanf(fout, "%d", &val);
		if (kmin[0] < val)
		{
			kmin[0] = val;
			AdjustDown(kmin, k, 0);
		}
	}
	for (int i = 0; i < k; i++)
		printf("%d ", kmin[i]);
	
}
int main()
{
	//text();
	//int a[] = { 7,8,6,5,4,3,7,1,9 };
	//int n = sizeof(a) / sizeof(int);
	//HeapSort(a, n);
	//for (int i = 0; i < n; i++)
	//{
	//	printf("%d ", a[i]);
	//}
	//CreateData();
	TopK(5);
	return 0;
}